//////////////////////////////////////////////////////////////////////////////////////////////
//	File			:	"SelectSquadState.h"
//
//	Author			:	Mike Davis, Matt Stover, James Thornton, Keith Webster
//	
//	Project			:	TacWars
//
//	Last Modified	:	11/6/2013
//
//	Purpose			:	
//
//////////////////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "IGameState.h"
#include "../GameObjects/Entity.h"
#include "../MapSystem/BattleMap.h"
#include "../ParticleSystem/Emitter.h"
#include "../Animation/AnimationManager.h"
#include "../Animation/AnimInfo.h"
#include "../GameObjects/Player.h"
#include <vector>
using namespace std;

class CSGD_MessageSystem;
class CSGD_EventSystem;
class IMessage;

class CEntity;
class CEntityManager;
class Player;
class CBitmapFont;
class BattleMap;
class SelectSquadState : public IGameState
{
public:
	static SelectSquadState* GetInstance();

	virtual void Enter();
	virtual void Exit();						
	virtual bool Input();					
	virtual void Update( float fElapsedTime );	
	virtual void Render();	
	bool Keyboard();
	void AddToSquad(Player* player, Entity* Unit) const;
	void CreateArmy(Player* player) const;
	

	Player* playerOne;
	Player* playerTwo;

private:
	SelectSquadState();
	virtual ~SelectSquadState();
	SelectSquadState(const SelectSquadState&);
	SelectSquadState& operator= (const SelectSquadState&);

	static void MessageProc(IMessage* pMsg);

	CSGD_MessageSystem*		MS;
	CSGD_EventSystem*		ES;

	int cursor, titleImgID, knightArmyCount, berserkerArmyCount, priestArmyCount, rangerArmyCount,
		knightSquadCount, berserkerSquadCount, priestSquadCount, rangerSquadCount;

	vector <Entity*> tempArmyVec;
	vector <Entity*> tempSquadVec;
	vector <Entity*> tempSquadAddVec;
	bool yUp;
	bool yDown;
	bool xRight;
	bool xLeft;

};